IssueImmediateOrder(caster, "howlofterror")
caster = юнит, которому ты хочешь отдать приказ
Ну или, раз ты id нашел:
IssueImmediateOrderById(caster, 852588)
Если значение меньше 0 хоть на .01 то твой герой или б.е. будет неуязвима. Это внутренний баг игры.
Хотя в этой фишке бессмертия есть и свои плюсы. Однако будет восполнять хп от этого процента, если по воину бьют магической атакой, или же при получении им урона от заклинания, которое наносит маг. урон.
Если хотите просто уменьшать наносимый урон, то делать лучше это через триггер.
Так же можешь в сокрытой способности на основе книга заклинаний делать блок урон на основе доспехи гор... Др. вариантов много...
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
действие проиграть звук и указываешь твою фразу
выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
что мешает юзнуть берсерк, манащит, канал, да хоть виндвалк?
Мешает то, что берсерк и виндвалк уже использованы, переключаемые абилки - хурма, а канал не моментальный.
Ты станишь юнита, какая тебе разница?
Канал пойдет с тем же успехом, юнит его кастанет в любом случае.
Переключаемые абилки работают нормально, если уметь немного искать и читать, как их юзать в качестве простых есть инфа в статьях на форуме.
Еще всякие вееры ножей, не сбивают приказ идти куда либо. Юзай его в качестве основы.
м, тебе надо выбирать по одному из группы?
я делал так: f - юнит gd-группа
loop
set f = FirstOfGroup(gd)
exitwhen f == null
call UnitDamageTarget(GetTriggerUnit(),f, damage, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",f,"origin"))
call GroupRemoveUnit(gd, f)
endloop
Сначала он выбирает первого юнита группы, делает с ним действия(в моем случае дамажит + эффект кладет), удаляет из группы. И как только юниты кончатся цикл брякается.
Sargaraser, эт проблема сиденья с телефона -'фиг попадешь по нужной ссылке
А по теме поиск творит чудеса , за 3 минуты поиска нашел 10 тем с таким вопросом и в каждой есть решение
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
не знаю даже поищи СТАРЕЙШИХ ИГРОКОВ У ВАРКРАФТА и попроси у них все карты которые они имеют
а дальше пороверь все карты и найди её если не найдёш значит она тебе приснилась)
Уровень = Уровню героя. Характеристики = Характеристикам героя. Цикл 6-разовый на каждый слот дающий предмет герою. Уровни способностей равные уровню способностей героя. Героя, в смысле твоего героя. Ну еще создать юнита типа твоего героя. Что-то еще? Если он где-то в переменных для пассивок, то с ними тоже по колдовать и все.
Будет только одна проблема, если ты книги атаки на его юзал то их никак не засеч без геморроя. А так все в виде целочисленных на твоем герое записано.
Увы нет, смотреть из за чего ошибка и потом смотреть что в коде могло её вызвать.
Так же нелишним будет собрать статистику а что именно происходило в этот момент и изучать код, кторый работал в этот момент.
Фаталить могут даже дефолтные способности.
Момент с порчей и миникартой оказался тем что там высота на уровне воды.
Но саму тень я все равно не могу убрать.
А все вопрос снимаю, это тень от здания
м, тебе надо выбирать по одному из группы?
я делал так: f - юнит gd-группа
loop
set f = FirstOfGroup(gd)
exitwhen f == null
call UnitDamageTarget(GetTriggerUnit(),f, damage, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",f,"origin"))
call GroupRemoveUnit(gd, f)
endloop
Сначала он выбирает первого юнита группы, делает с ним действия(в моем случае дамажит + эффект кладет), удаляет из группы. И как только юниты кончатся цикл брякается.
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
Ни разу не делал карты "чисто стандартного жанра". Т.е. общий жанр определить можно всегда, но нужно чтобы можно было выделить что-то, чем твоя карта реально отличается от себе подобных.
Вот, глянь чуть (щас набегут хомячки с возгласами ОЛОЛО РЕКЛАМА ДОК БЛИН КАК НЕ СТЫДНА)
Немного добавлю.. Tag (Tag Map) - Особенный жанр карт, в котором существует две команды - убегающие и догоняющие. Убегающие должны бежать от догоняющих, при этом они могут строить защитные базы, чтобы избежать поимки. Если убегающие выживут на протяжении заданного времени, то они выигрывают. Если догоняющие убивают всех убегающих до истечения времени, побеждают они. Выбывшие убегающие обычно помечаются как флаги или чёрные энты и воскрешаются, если они были атакованы или один из других убегающих достиг центра карты.
Примеры карт: Петросянщина, Вампиризм, Маньяк с пилой
Mini-Game - Жанр, включающий в себя карты обычно маленьких размеров и узконаправленные. Есть сборники мини-игр, которые включают в себя сразу несколько маленьких игрушек различного жанра. По своему устройству обычно несложные.
Примеры карт: Worm War, Death Sheep, Azeroth Grand Prix
Simulator - Не особо распространённый жанр карт, который содержит детализированное управление какой-либо аспектом карты. Его порой нетрудно спутать с RPG, но есть свои отличия.
Примеры карт: Ashenvale Archers, Fantasy Life, Jungle Trolls Reborn
Cinematic - Постановочные ролики, видео. Может даже и мини-фильмы.
Примеры карт: DDay:Judgement the Movie, matso TROY
Hero Arena - игроки выбирают по одному герою и помещаются на арену. Цель в отличие от AOS исключительно в убийстве героев вражеских игроков, а не уничтожении Базы врага.
Примеры карт: Angel arena
Сastle defense - игроки должны защищать определенное здание в течение определенного времени или количества волн монстров.
Примеры карт: X Hero Siege, Castle Fight, Lotr Lord of the Rings Castle Wars
Можно также делить общие жанры на категории: например:
Gerych, сюда тоже можно но вопрос будет закрыт через неделю с момента последнего ответа
ну а вообще для таких вещей стоит создать бложик и там в качестве ресурса подобное спрашивать
Smart096, баг только в этой карте?
в новых картах бага нету?
если да то стоит проверить импортируемые модели и текстуры (мб часть битая)
но с вероятностью в 60% проблема в системе ибо было много жалоб на баги в вин10
Параметры стака ядов с одним и тем же баффом, это нужно чтобы складывались замедлени и\или урон от разных юнитов, или бафф тупо обновлялся.
С одним из параметров яды с разными баффами скатаются независимо, каждый вешает свой бафф. (годная основа для замедляющих способностей)
А игра вылетает из за зацикливания, темболее бафф при удалении и появлении наносит 0.00 ед урона, это так для справки.
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально
в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами
Если юнит создается, предмет дается, значит ошибка точно не в событиях и не в условиях. В действиях нет ошибок тоже. Может быть неправильно установлена переменная "Drenney_AttackingUnit". Или проверь сам предмет. Может он не рабочий.
Сначала попробуй перенести все триги в другую карту, если в другой мапе все работает - проблема не в тригах, если всеже в тригах - удаляй по очереди, категориями, выясняй из-за каких не работает. Это проблема частного триггера\переменной. Чаще всего так.
ПЫСЫ не забывай бэкапить карту
Лимит операций примерно 4 к. А у тебя тут поболее 16к.
Обойти лимит операций можно только разнеся действия в разные потоки. К примеру для через таймер.
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
Проблема в том, что, если в этой точке построено здание, то IsTerrainPathable(x, y, PATHING_TYPE_BUILDABILITY) не помогает (это терраин проверяет, а вот то что там построено или нет ему пофиг). Посмотрел в триггерах, есть только текстуры земли - уберспласты (там эти текстурки для здания) - нет функции такой в библиотеке jngp для проверки точки. Пробовал через группу, но там своя заминка (походу выборка ловит тех юнитов, точки которых попали в выборку, а не на целиком. Точно не проверял, но не работает с группой), Clamp, решил через проверку
if (IssueBuildOrderById(YT, 'hhou', x, y) == false) then если не может построить, значит там здание или что-нибудь еще. Clamp, помог еще твоя ссылка ExecuteFunc. видимо у меня лимит был, не хотело работать (просто дебаг не отобрал. и раб стоял). Хотя это уже не нужно было
А да слегка подвисает на секунду =(
Урра короче без лагов сделал (версия 3), подредактировать недоработку и будет норм
берёшь содержимое бж функций с сайта
и копируешь себе в блокнотик
по поводу русификации копайся в файлах джнгп
мб найдёшь где то файлик с именами
либо сноси свой вар нафиг и ставь англ верию
filterGetUnitsOfTypeIdAll - фильтр, вместо него должно быть написано либо null или Condition( function XXX) Короче зачем нужен фильтр? Фильтр при выборе всех юнитов сразу отсеивает не нужных, если по условию не подходит, то выкидывает.. Вам сразу достается готовая группа с нужными юнитами
А в качестве переменных используй GetFilterUnit, GetFilterPlayer. На гуи по-другому называют MatchingUnit
где XXX - название функции, эта функция возвращает boolean (то есть истину или ложь)
вбей в поиск названии функции, может найдешь ответ
например выделяем все здания UNIT_TYPE_STRUCTURE, а те, кто не является зданием отсеиваем
function XXX takes nothing returns boolean
return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE)
endfunction
насчет статьи не видел, это придет с пониманием. Главное начать. Сначала тупо конверт, и оптимизация. А дальше можешь сам
что у тебя там не работает скидывай сюда
Это какие-то извращения у вас там.
Bj можно раскрыть и увидеть, что там происходит присваивание нового юнита глобалке bj_lastCreatedUnit.
Нужно сразу присваивать локалке нового юнита и не использовать эти ваши bj_lastCreatedUnit:
local unit u
u = CreateUnitAtLoc (GetTriggerPlayer(), 'hfoo', location, bj_UNIT_FACING)
Эмм что за ерунда, сократил код, убрав всё лишнее, но утечки все равно остаются, по 1.5 - 2 хэндла за каждое нанесение урона (тип хэндла не знаю как посмотреть). Когда триггер отключаешь, то всё нормально.
Сокращенный код
function SDMSCreateTextTag takes nothing returns nothing
local unit u=GetTriggerUnit()
local unit s=GetEventDamageSource()
local integer i=GetConvertedPlayerId(GetOwningPlayer(u))
local texttag tt=CreateTextTag()
local real dmg=GetEventDamage()
if ( dmg > 1.00 ) and ( dmg < 9999.00 ) then
if GetPlayerId(GetOwningPlayer(u))==12 then
call SetTextTagText(tt, "|cff9db9eb-"+I2S(R2I(dmg))+"|r", 0.023)
else
call SetTextTagText(tt, "|cffffa500-"+I2S(R2I(dmg))+"|r", 0.023)
endif
call SetTextTagPosUnit(tt, u, 0)
call SetTextTagColor(tt, 255, 255, 255, 255)
call SetTextTagVelocity(tt, 0.05325*Cos(90 * bj_DEGTORAD), 0.05325*Sin(90 * bj_DEGTORAD))
call SetTextTagPermanent(tt, false)
call SetTextTagLifespan(tt, 1.0)
call SetTextTagFadepoint(tt, 0.0)
endif
call PolledWait(2.0)
call DestroyTextTag(tt)
set u=null
set s=null
set i=0
set dmg=0
set tt=null
endfunction
function SDMSTriggerRegisterUnitDamaged takes nothing returns nothing
call TriggerRegisterUnitEvent(udg_SDMStrigger,GetEnteringUnit(),EVENT_UNIT_DAMAGED)
endfunction
function theSDMSTriggerActions takes nothing returns nothing
local trigger UnitEnter=CreateTrigger()
call TriggerRegisterEnterRectSimple(UnitEnter, gg_rct_Arena)
call TriggerAddAction(UnitEnter,function SDMSTriggerRegisterUnitDamaged)
set UnitEnter=null
endfunction
function InitTrig_the_SDMS_Trigger takes nothing returns nothing
local trigger tr=CreateTrigger()
set udg_SDMStrigger=CreateTrigger()//Тут также меняется название глобальной переменной типа триггер.
call TriggerAddAction(udg_SDMStrigger,function SDMSCreateTextTag)
call TriggerRegisterTimerEventSingle(tr,0.0)
call TriggerAddAction(tr,function theSDMSTriggerActions)
set tr=null
endfunction
Wait вызывает утечки ((
Пришлось делать через таймер
Gerhop, если у игрока лишь 1 герой то можно сразу дать этот скилл
при подборе предмета разрешать его а при выпадении запрещать
тогда вроде кд будет сохранятся
если мне память не изменяет
Потому что у модели для этих состояний предусмотрена именно такая анимация, это свойство модели и кроме как заставить триггерно юнита проигрывать нужную анимацию или переделывать модель путей нету.
Ничего не понятно, но если не работает пеший в пешего, почему не пеший>летающий>пеший - использовать посредника?
Ващето пеший в пешего работает но не так, альт форма дамми юнит, нормальная форма тот в кого хотим превратится, основа перевоплощение, все параметры в 0.
Я думаю, тебе стоит переписать свою темку на другом языке, ибо не отвечают потому что не понимают.
Custom, Никак, HeroAbilityList низя править во время игры, делайте несколько героев с разными наборами скиллов на изучение, а потом морфите.
Как правильно морфить можно найти инфу тут.
Перед морфом желательно убирать все предметы из инвентаря.
Делай call UnitMakeAbilityPermanent(u, true,'A000') ) .
Где вместо A000 твоя абилка.
Если абила спеллбучная, то все спеллбуки тоже надо вживлять.
Перманент-абилы не пропадают после морфа и анморфа. Просто добавленные - пропадают.
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально
в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами
VovkaShyt, будет, хоть 10 хоть 0,01 будет снижаться количеством брони, а эти параметры - снижение от типа брони, сила тьмы игнорирует тип брони, а вот атака героя не игнорирует тип защиты зданий, здания, вспомните как долго в мили картах ломаются здания.
У вайпера "Corrosive Skin" сделано на событии получения урона выше опред. порога (вроде выше 2.00).
Если охото чтобы именно дебафнуть в момент нанесения тычки, то тут нужно 2 триггера, 1 который следит (юнит атакован) и запускат таймер на скмжем 2 сек.
Второй триггер ждет что кто то (атакуемый или атакующий) сдохнет, время выйдет, атакующий отдаст приказ без указания цели, атакуемый получит урон.
Добавляя атакуемому скилл на основе рунных браслетов (-2.00 фактор резиста) и отсеиваем весь урон от заклинаний (ну наносим его юниту еще раз, но удалив браслеты и снизив хп) а если урон физический и источник урона на наз замахивался,последние 2 сек, + не успел отдать приказ без указания цели то его баффаем.
Если совсем лень, скачиваем систему отлова физического урона.
Нужно делать регионы подальше от мест строительства, смотри замок скиби.
Так же сделай крипам атаку которая ваншотит здания, если крипы не смогут пройти, они будут автоатковать ближайшие здания, таким образом тот кто застроит проход - навредит сам себе.
Попробуй событие - входит в регион, ну и проверь что юн ит мертв.
Дефолтные способности сложно отслеживать, многие используют для работы свои методы, как к примеру руны или орбы - они хоть и кастуют спелл нл события каста нету, как и проверки приказа, кулдауна и прочего.
8gabriel8, нет. Тебе нужен жар преисподней или любая абилка, которая позволяет отловить приказ включени/выключения. При приказе включения добавляешь герою ауру замедления (ну для дамага жар преисподней сойдет с увеличенным радиусом, а если нет- сделай таймерный дамаг). При выключении убираешь ауру замедления и отключаешь таймерный дамаг. Все просто
7..12) Орда
13..18) Нежить
19..24) Ночные Эльфы
25..30) Наги
И еще 31-60) Для нестандартных
+ суффикс редактора = очень много.
Хотя например для своей карты я сделал так: имена юнитов / заклинаний начинаются на категорию а дальше идет имя самого юнита. Например:
Защитные - Воин
Защитные - Лучник
Нападающие - Воин
Нападающие - Лучник
А по изменению редактора...
Теоретически тебе надо взять исходники редактора (JNGP например) и написать плагин/модуль который:
меняет структуру файла карты - новые папки добавляет (открываться будет только в твоем редакторе)
добавляет на UI соответствующие кнопки / окошки ввода
Либо вариация предыдущего - поменять алгоритм сортировки в редакторе - чтобы сортировалось в первую очередь по суффиксу редактора, а потом уже по имени. Намного проще, если иметь исходник.
bladget, скорее всего (если у тебя Vista или W7 стоит), в старой папки остались "файлы совместимости", которые не удаляются просто так. В WoO много всякого мусора было...
» WarCraft 3 / Леденящий крик
» WarCraft 3 / Очищается группа
» WarCraft 3 / Стан в неуязвимость
» WarCraft 3 / Юнит в группе
» WarCraft 3 / Старая карта в варике
» WarCraft 3 / Warcraft 3: 1.28+
» WarCraft 3 / Проблема с работой библиотеки
» WarCraft 3 / Убрать тень
» WarCraft 3 / Выбран юнит
» WarCraft 3 / Жанр карты
» WarCraft 3 / Текст при загрузке карты
» WarCraft 3 / Урон 0
» WarCraft 3 / Вампиризм
» WarCraft 3 / Не работает триггер
» WarCraft 3 / Вроде просто, но я не понимаю как...
» WarCraft 3 / BJ-функция
» WarCraft 3 / Триггер получения предмета
» WarCraft 3 / Герой не морфается
» WarCraft 3 / Менять тип атаки
» WarCraft 3 / Как определить атаку и защиту
» WarCraft 3 / точка сбора
» WarCraft 3 / способности
» WarCraft 3 / Создать в РО способность
» WarCraft 3 / Модели